資料庫為大多軟體系統的核心基礎建設,身為軟體工程師,學習程式語言之後,第二個學習技術非資料庫莫屬,但除了 SQL & Transaction 等基礎知識外,學習底層架構以及設計原理也非常重要!
不懂原理前,你可能認為優化查詢就是加 Index,但其實 Index 欄位宣告順序很重要,另外 Transaction 執行太久也會影響整個 DB 查詢效能。
不懂原理前,你可能覺得併發時加 FOR UPDATE 就不會 race condition 了,但其實亂加 FOR UPDATE 可能 Deadlock ,甚至 Lock 整張 Table,有時甚至不加 FOR UPDATE 也會 Deadlock。
不懂原理前,你可能覺得資料庫會 MySQL or PostgreSQL 就好了,但其實 MySQL & PostgreSQL 有各自的侷限性,當資料變多或不同商業需求時,需搭配不同類型資料庫來完成。
也就是說,了解資料庫原理除了讓你寫 SQL 時更安心,還能在系統設計時了解不同資料庫的 trade off,設計出更完整的架構!
資料庫操作其實就是讀跟寫,但光這兩個操作就能衍生出許問題,例如:
為了回答上面的問題,你需要知道
這系列已 MySQL 為主,其他資料庫為輔介紹資料庫設計原理,雖是 MySQL 為主,但很多概念是通用的,例如 Page & B+Tree & WAL & MVCC & Lock 等。
這個系列會分成七大段落:
每個段落會用問題引導讀者,一邊閱讀一邊思考,化被動閱讀成主動學習,希望大家讀完後能對資料庫原理有更深的領悟。
開始理解資料庫原理就是邁向資深的第一步,一起來成為厲害的工程師吧!
About Me
歡迎大家追蹤我的 Thread,平常會在上面分享技術文章
https://www.threads.com/@chill.vic.22